INTRODUCTION:
TERMINOLOGY:
INTERFACE:
TOOL PALETTE
WINDOWS AND PALETTES
MENU REFERENCE

OPERATIONS REFERENCE
SMOOTH / UNSMOOTH...
SWEEP
LATHE / REFLECT...
Interactive Lathing
Advanced Lathe options
EXTRUDE...
Interactive Extrusion
Advanced Extrusion Options
JOIN...
LOFT...
RANDOMIZE...
TRIM...

GENERAL REFERENCE
SPLINE PATHS
Path Extrude / Pipelining
Lofting
Hierarchy Paths
UNDO / REDO
DXF IMPORT/EXPORT
QUICKDRAW 3D IMPORT/EXPORT

EXAMPLES

OPERATIONS REFERENCE

A number of operations are available under the Model menu. Most (those with Š). use a dialog to set options and actually trigger the action. These dialogs are modeless: they can be left open if desired, and they have no effect on the system unless one of their action buttons is clicked. If a dialog is hidden behind a window, just select it from the Model menu to bring it to the front again. Most of these dialogs get the select click, meaning that clicking a button in an inactive dialog both activates the dialog AND clicks the button. Bear this in mind when clicking in a dialog to activate it.

SMOOTH / UNSMOOTH...
Displays a small dialog with 4 action buttons and 2 option checkboxes, plus one Expert option (click the Zoom box). The options control whether selected splines are affected (Selected Only) and whether Deselected (actually, selected at ONE end) are processed. Turning Deselected Splines off might be useful when smoothing a ridge (path) that has been pulled out of a mesh surface, without doing anything to the surface.
IMPORTANT: Straightening and resmoothing usually does NOT produce the same curve you started with!

SWEEP
Advanced users may wonder why there is no Sweep function listed under the Model menu. Sweep has historically been implemented in many different ways, no two alike. It usually means a type of path extrusion, or a combined extrusion and lathing operation, or both. This leads to confusion and makes the feature less useful than it might be. Instead of inventing yet another version of sweep, PatchDance provides enhanced versions of Extrude and Lathe that (hopefully) provide all the capabilities of a dedicated sweep function in a more intuitive way.
For example, it is simple to produce a spiral path using the lathe function, which can then be used as an extrusion path. By using a scaling factor for the extrusion, its possible to produce a nautilus shape. An advanced Sweep function might do this in one step, but the setup would be HARD. PatchDance allows you to use several simple operations, with multiple undo available at each step along the way.


LATHE / REFLECT...
These are standard 3D modeling functions. The following discussion assumes previous experience with them elsewhere.

Interactive Lathing. When Lathe (with Tool) is checked in the Rotator (R) dialog, rotated objects are lathed. The current software does not draw arcs: visually the tool works as usual.

Advanced Lathe options (Click the Zoom Box to display). Both of these operations occur over 360° or the entire lathing, whichever is less.


EXTRUDE... Standard 3D extrusion function.
Mode Popup:

Interactive Extrusion: when Extrude (with Tool) is checked in the Mover (D) dialog, Moved objects are extruded to their new position. This operation performs a simple extrusion with no scaling or twisting. You are (obviously) limited to motion in the plane of a single window.

Advanced Extrusion Options: Twist and Scale perform the obvious functions on extruded objects. Rotating 0° or scaling 100% results in NO SCALING, regardless of the Per Step checkbox value. Using either of these options prevents a closed path extrusion from rejoining itself. (You can use the JoinŠ function if the ends are compatible.)
Numeric Mode: The twist or scaling is relative to the 3D Cursor (which moves along with the extruded object). IMPORTANT: numeric extrusion creates ONLY segments or straight splines. If you need a curved object, you should probably extrude it without twisting, then use the Rotator (R).

Path/Pipeline. The object is twisted/scaled at each step, relative to the current path point. Twist is either averaged over the entire extrusion or per step. Applying the scaling value at each step produces a logarithmic profile; when averaged over the course of the extrusion, the result is uniform (NOT logarithmic). NOTE: unless the path points are evenly spaced, (such as those produced by the Lathe function) these operations may produce poor results. A planned modification will operate on paths in terms of arc length instead of actual points, and be easier to use.

JOIN... Moves selected points together (Average Points) and optionally joins them into a single point (Join Points).
The Join function is not recursive: a given point is moved only once. This means that a cloud of points (larger than Tolerance) will group into several scattered clumps rather than (recursively) joining into a single point. (Of course, the clumps can then be Joined again).
When joining surfaces, Join removes doubled splines. Currently, no attempt is made to account for doubled splines with different shapes: Join arbitrarily selects one and uses it, altering attached patches as necessary. This can lead to odd results when different shapes are welded together.
Tolerance is the maximum distance between selected points.
Join At Cursor Only affects only points within Tolerance of the 3D Cursor. It has the effect of snapping the selection to the Cursor.

LOFT... Create a skin (patched spline mesh) over a series of ribs (forms).
PatchDance is able to handle both open and closed curves, with certain limitations; mixing the two types carelessly may produce unusual results. The ribs are actually a type of Spline Path.
This function is invoked by a hierarchic menu which allows you to choose a Spline type; there is no Loft dialog.
For Lofting to produce good results, the ribs must be selected in the order that they are to be skinned: this allows you to skin even a toroid shape if desired (this would require 2 iterations to close the object, however: Loft cannot use the same rib twice). They must also be selected in a specific way to tell PatchDance what order and direction to use when generating the skin. Think of this as specifying a seam (one point) and the skin wrap direction (the second point). Fortunately, this is easier than it sounds. See Loft Example and Loft Example 2 for a quick tutorial, including a hot tip as to technique.
Lofting open paths adds one more requirement: the start point must be at the END of the path (PatchDance cannot go 2 ways from the middle). This removes the need to specify the wrap direction: just select the entire path by clicking at one end with the Object Arrow (C). When lofting an open and a curved path together, (i.e. making a toothpaste tube) the two paths should have as near the same number of points as possible for the best results: use the Scissors (2) to add more points if necessary.

RANDOMIZE... applies a random displacement to the current selection. You can displace along any or all axes, in any amount (enter 0 for none).
Effect controls what is moved: Both causes all selected points AND all their handles to shift. Handles are moved the same amount as their endpoints. Selecting Points causes only points to move: spline handles stay put, which tends to create sharp corners and peaks. Splines moves (independently) all handles attached to selected points. The result of this is hard to describe. We hope someone finds it useful.
Type sets the distribution of the moved items. Currently only average (evenly spread) is supported. See Randomize Example for more details.


TRIM... Not yet operational.
Trim is a pseudo-Boolean function. A true Boolean operates on volume; PatchDance is based on surfaces. As a result, the Trim operation does not actually add/subtract volumes, rather it cuts (trims) surfaces that intersect. ONLY patches are affected: you cannot trim a spline mesh that does not form a patch (renderable) surface.
Trim can easily produce very complex shapes. We know of no available Macintosh program with a Boolean-type function that works on true spline surfaces. PatchDance will hopefully be the first when this feature is released.

Example: A flat spline mesh with a cylinder stuck through it. Invoking Trim (with appropriate options) would create: A mesh with a hole through it (where the cylinder penetrated); a flat disk (the area of the mesh that was cut out to form the hole); two pieces of cylinder (above and below the mesh).
By removing one piece of cylinder and the disk and Joining the rest, we would have a flat surface with a cylinder sticking out of it; by joining the other piece of cylinder and the disk, we produce a (shortened) cylinder with a closed end.




GENERAL REFERENCE

Topics that don¹t neatly fit into any other category, or apply to several categories.

SPLINE PATHS
Spline Paths are used for extrusion and indirectly for lofting. Other uses are possible in future releases, especially in connection with animation (in conjunction with the Hierarchy system).
A Path is a set of one or more splines. It can be linear or a closed loop; selected or deselected or a mix; and may even be branched under certain conditions. Many operations impose further limitations, described below.
When a Path is given a hierarchic name it becomes a designated Path, able to store additional information (such as velocity/acceleration/axis values for an animated object). A designated (named) Path may be edited freely just like any other spline, but it cannot be used in any way that changes its nature; you cannot lathe or loft a Path, for example, without converting it back into a plain spline, nor can you add more splines to a Path without redesignating it. You can, however, use a named path for an extrusion path, since this has no effect on the path itself.

Path Extrude / Pipelining. These operations both use a path to control an extrusion. Each point on the path results in a separate copy of the extruded template, with connecting lines created per the Extrude dialog options set. This path has the following requirements:

  1. The path may be open or closed (a loop). Except as provided under (2) below, selection status makes no difference.
  2. The path may be branched. For this to work, there must ALWAYS be exactly one selected point at each branch: PatchDance always ignores deselected points and uses selected when available. There must ALWAYS be an unambiguous route to take, or the operation will fail.
  3. The 3D Cursor must be snapped to the first point (the start of the path). See also Path Extrude Example.

Lofting. The ribs used for a lofting operation are actually spline paths. They have the following limitations:
  1. All points to be lofted must be selected. Attached deselected points are ignored.
  2. Closed loops must have their seam point selected first and a direction point selected next. The direction point MUST be adjacent to the seam point or it will be ignored (PatchDance will then pick a direction). For a tip on doing this efficiently, see Loft Example .
  3. Open paths must have one endpoint selected first. No direction point is needed, because lofting must ALWAYS start from an end. The easiest way to achieve this is to select the entire object by clicking the desired endpoint with the Object Arrow (C). Failure to correctly select an endpoint may fail outright or attempt to loft anyway, with unpredictable results.

Hierarchy Paths. The Hierarchy system can name a path and associate it with object(s) to be animated. A Path behaves much like a folder except that it contains (internally) a reference to a spline path to be used. A Path is designated by snapping the 3D Cursor to a starting point (MUST be an endpoint, unless a loop). An animation path has the following requirements:

  1. No branching. The path must be a simple curve or closed loop. For loops, you may select a point (next to the point you have indicated with the 3D Cursor) to designate the direction of motion.
  2. The path must not be connected to a patch in any way. It is pure geometry, and connecting it to anything invalidates it. (If you wish to use a path that is part of an object, just select all its points and duplicate them first.)

UNDO / REDO
PatchDance provides 0,1, or 32 levels of undo, as set in the Preferences dialog. For 32 levels, there is no way to randomly undo or redo, it must be done in order. You might reduce undo to 1 level to save memory in extreme cases; you should not normally turn it off (this saves very little additional memory). Undoing an action and then doing anything else (other than redo) causes the undone operation(s) to be permanently lost.

IMPORTANT - Operations that are NOT undoable:

  1. Operations in the Hierarchy Dialog. This includes naming objects or manipulating the hierarchy itself. Of course, all operations on objects (i.e., selecting named points) may be undone, but undo/redo affects the actual points involved, even if you have changed their names.
  2. Setting the 3D Cursor. Operations that depend on the Cursor will be undone or redone correctly even if the cursor has been moved. Undo operations never change (or use) the current Cursor position.
  3. Operations that affect the view rather than the model. This includes zooming, scale adjustments, Camera adjustments, and moving the view with the Hand (H). Moving the Camera or Focus, however, is undoable.
  4. QuickColor changes (all Texture changes) are not undoable. Selection and deselection by Texture or QuickColor can be undone, but only on the basis of the actual points that were affected: changing their color later has no effect on the undo system. (This works the same way as undoing Hierarchy actions).

DXF EXPORT
PatchDance can export a model to (almost all) other programs via the DXF format.
DXF presents an interesting problem: the DXF format is capable of describing spline surfaces in great detail but no Macintosh program we¹ve tried (even those with spline capability) exports ANY spline information in DXF form, and their ability to read spline data is questionable. We have no way to test this in general, and we KNOW of several programs that cannot read spline or even polygonal mesh data, so we decided to keep to the lowest common denominator. Therefore: PatchDance exports lone points (ignored by most other programs); lone splines and unpatched spline meshes (as LINE and POLYLINE types) which are often ignored by other programs (or may be converted to surfaces); and patches, as 3DFACE objects (separate 3 and 4 sided polygons). So far, our files have imported well. The scale is whatever is currently set in the General dialog and showing in the Rulers: i.e. if PatchDance and the importing program are both talking inches, imported objects should be the same size.
There are a number of user-settable options, most of which are self-explanatory (check the Show Options checkbox in the SaveŠ dialog). Options relating to the generated mesh are identical to the controls used for QuickDraw 3D and are discussed in that section.
Export Surfaces Only (the default) ignores everything except patches; points and splines that are not part of a patch surface are not exported. This was added to address problems with certain programs that refuse to read files containing these items. We recommend leaving this box checked unless you are specifically exporting bare geometry and are sure your target program can handle it.

For the remaining options, there are several IMPORTANT WARNINGS:

  1. PatchDance will attempt to export its QuickColors (for patches). These may be ignored or interpreted in unpredictable ways. You can always turn this off, or re-color. Many programs do not support multiple colors in the same object.
  2. PatchDance is able to export hierarchy information. Unfortunately, the naming of objects is not very standardized, and PatchDance has more capability in this area than ANY other program: a recipe for disaster. In one test, we named the top and bottom halves of a sphere separately (as patches); this effectively names the shared points on the ³equator² twice, which PatchDance handles with ease. Opening this file in Sculpt3D resulted in TWO separated hemispheres (named correctly, though). If you wish to try this feature, we suggest that you name only connected objects (most other programs require this anyway), and use ONE type of naming within a single object (point, spline, or patch). Naming as patches is most likely to succeed. If demand warrants, we will attempt to provide more options in this area.
  3. Be sure you have patches where you want surfaces: empty spline meshes often become surfaces when imported, but they can also fail in odd ways depending on how they are subdivided by the DXF function. Empty outlines (many-sided polygons) have a tendency to spawn additional connecting lines in unpredictable fashion.

DXF IMPORT
PatchDance can import a model in DXF format. This capability is basic and not thoroughly tested (demand has been limited to date). There are no options: simply set DXF (or All Types) in the file dialog or drop the file (it must be of type TEXT) on PatchDance¹s icon. Imported objects lose texture and hierarchy information and appear as polygons: they must be manually smoothed.


QuickDraw 3D IMPORT and EXPORT
PatchDance can read and write 3DMF files when QuickDraw 3D is available.
Import is simple: use the file types popup in the OpenŠ dialog or drop the file on PatchDance¹s icon (files created by PatchDance can be double clicked as usual). Not all QuickDraw 3D attributes are supported as yet (and unsupported types cannot be read and then rewritten). Also be advised that some QuickDraw 3D files produce VERY large models. The file Galleon, for example, (available for tryout purposes from Apple) contains over 18,000 points and requires more than the minimum amount of memory to open.
PatchDance does not support General Polygons (rare) and will warn you if they are found in a file. Meshes containing contours (holes) can be imported, but the holes are lost.

Export is also simple. PatchDance writes all files in NURBS format by default: depending on your application, this may not be what you want. You can choose to use mesh format as an option (check the Show Options checkbox in the SaveŠ dialog). Many options are self-explanatory, but a few notes follow:

Write as Text causes the file to written in QuickDraw 3D text format. These files are larger, slower, and generally only useful for advanced users who want to examine the data directly.

When writing files in Mesh format, you can control the generated meshes in several ways (these apply to DXF files as well):
The Mesh popup menu controls the type of subdivision for PatchDance's curved patches being converted to polygons. The subdivision is also controlled by the number in the edit field to the right of the popup menu. The choices are:

Maximum Subdivision sets the maximum number of times any spline can be subdivided (no more than 5 in any case). This is ignored for fixed subdivision but may be useful in limitingthe other types.
Divide Uniformly. Normally if a patch has several straight sides and only one curved, only the curved side is divided. If this checkbox is turned on, ALL sides of 3 sided patches will be divided if any are opposite sides of 4 sided patches both will be divided if either needs to be.
This option is ignored for fixed subdivision but can give better results with other modes. Be aware that a single curved spline can easily propagate through an entire surface. This may be deleted as the Ruler Size and Max Angle options improve.



Next Section: EXAMPLES